home *** CD-ROM | disk | FTP | other *** search
/ Network Support Library / RoseWare - Network Support Library.iso / menu / mxmenu.exe / INST.MNU < prev    next >
Text File  |  1993-09-05  |  13KB  |  450 lines

  1. Comment
  2. =========================================================
  3.  
  4. MarxMenu installation Menu:
  5.  
  6. Copyright 1989-1993 by Marc Perkel * All rights reserved.
  7.  
  8. This is an example of how MarxMenu can be used as a job control
  9. language. There is quite an education in MarxMenu tricks here. If
  10. you want to write a similar program, this menu is worth studying.
  11.  
  12. =========================================================
  13. EndComment
  14.  
  15. Var
  16.   EchoSt
  17.   FileLine
  18.   FileLinePtr
  19.   ProgName
  20.   BatExit
  21.   EchoTail
  22.   ConfigSysPath
  23.   ConfigSysLines
  24.   WorkStr
  25.   DosVerNumber
  26.  
  27. Const
  28.   PauseTime = 100
  29.  
  30. DelFile 'MENUS.EXE'
  31.  
  32. InitialDisplay
  33.  
  34. Shadow Off
  35. DrawBox 25 12 31 5
  36.  
  37. DosVerNumber = DosVersion * 100 + MinorDosVersion
  38.  
  39. ;MXECHO is a debugging environment variable. Use SET MXMENU=OFF for
  40. ;normal use. SET MXECHO=ON to watch the MARX.BAT run.
  41.  
  42. if ReadEnv('MXECHO') > ''
  43.    EchoTail = '%MXECHO%'
  44. else
  45.    if ExistOnPath 'MARX.BAT' > ''
  46.       EchoTail = 'OFF'
  47.    else
  48.       EchoTail = 'ON'
  49.    endif
  50. endIf
  51.  
  52. if DosVerNumber >= 330
  53.    EchoSt = '@ECHO ' + EchoTail
  54. else
  55.    EchoSt = 'ECHO ' + EchoTail
  56. endif
  57.  
  58.  
  59. ProgName = CleanFileName(Path + '\MARXMENU.EXE')
  60.  
  61. Write ' Creating MARX.BAT ... '
  62.  
  63. ;----- BatExit is a 0k bat file used to exit batch files
  64.  
  65. FileAssign (BatExit,'BATEXIT.BAT')
  66. FileCreate BatExit
  67. FileClose  BatExit
  68.  
  69. ;----- Here we create the MARX.BAT file.
  70.  
  71. ClearLineBuffer
  72.  
  73. AddLine EchoSt
  74. AddLine (ProgName + ' %1')
  75. AddLine '%MXCMD%'
  76. AddLine (CleanFileName(Path + '\MARX.BAT') + ' %1')
  77. AddLine ''
  78. AddLine 'Goto ERROR1'
  79. AddLine ''
  80. AddLine '*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*'
  81. AddLine ''
  82. AddLine 'MarxMenu * CopyRight 1989-93 by Marc Perkel'
  83. AddLine ''
  84. AddLine 'Once you are confident that MarxMenu is working correctly'
  85. AddLine 'the first line of this file can be changed to ECHO OFF.'
  86. AddLine ''
  87. AddLine 'MarxMenu controls this batch file by writing to the environment'
  88. AddLine 'variable MXCMD.'
  89. AddLine ''
  90. AddLine 'MXSTOP.BAT is executed to exit this batch file.'
  91. AddLine ''
  92. AddLine '*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*'
  93. AddLine ''
  94. AddLine '         MARX.BAT'
  95. AddLine '         --------   +--MarxMenu Creates--+'
  96. AddLine '  +----> @ECHO OFF  |                    |'
  97. AddLine '  |      MARXMENU.EXE %1                 |'
  98. AddLine '  |      %MXCMD% >--+                    +-> $MX00000.BAT'
  99. AddLine '  | +--> MARX %1 +  |                        ------------'
  100. AddLine '  | |            |  +----------------------> CD\WORDSTAR'
  101. AddLine '  +-|------<-----+                           WS --+'
  102. AddLine '    |                                             |'
  103. AddLine '    +-------------------------------------------<-+'
  104. AddLine ''
  105. AddLine 'Note: MarxMenu sets MXCMD = CALL $MX00000.BAT'
  106. AddLine ''
  107. AddLine 'By Default, MarxMenu creates the temporary batch file in the same'
  108. AddLine 'directory as MARXMENU.EXE. If a second parameter is specified, and'
  109. AddLine 'the second parameter is a directory, then MarxMenu will create the'
  110. AddLine 'batch file there. If the second paramerer is a file name, then MarxMenu'
  111. AddLine 'will use it for the temporary file.'
  112. AddLine ''
  113. AddLine 'If you set and environment variable TEMP to the name of a directory,'
  114. AddLine "MarxMenu will use this directory for it's temporary batch files."
  115. AddLine ''
  116. AddLine 'Example SET TEMP=C:\TEMPFILE'
  117. AddLine ''
  118. AddLine 'The MARX.BAT file must be path accessable or you will get a'
  119. AddLine '"Bad Command or FileName" error. MARXMENU.EXE must also be path'
  120. AddLine 'accessable. The directory where MarxMenu creates temporary batch'
  121. AddLine 'files does not need to be path accessable.'
  122. AddLine ''
  123. AddLine '*-=-=-=-=-=-=-=-=-=-=[ Error Trapping Section ]-=-=-=-=-=-=-=-=-*'
  124. AddLine ''
  125. AddLine 'If you get here it is probably because you moved the MARX.BAT file'
  126. AddLine "from the directory you installed it to a new directory and didn't"
  127. AddLine 'change the path to MARXMENU.EXE and MARX.BAT in lines 2 and 4 of'
  128. AddLine 'this batch file.'
  129. AddLine ''
  130. AddLine ':ERROR1'
  131. AddLine 'CLS'
  132. AddLine 'Echo  * * * * * * Warning * * * * * * *'
  133. AddLine 'Echo.'
  134. AddLine 'Echo  Line 4 of this batch file does not point to the directory'
  135. AddLine 'Echo  where MARX.BAT is located. Change to the directory where'
  136. AddLine 'Echo  the MARXMENU files are located and type MARXMENU INST to'
  137. AddLine 'Echo  re-create the MARX.BAT file for that directory.'
  138. AddLine ''
  139. AddLine 'Goto ENDBAT'
  140. AddLine ''
  141. AddLine '*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*'
  142. AddLine ''
  143. AddLine 'This exit point is used if MXSTOP.BAT can not be found. It is'
  144. AddLine 'usually caused by moving the MarxMenu files from one directory'
  145. AddLine 'to another and not copying all the BAT files. MarxMenu sets the'
  146. AddLine 'environment variable MXCMD to GOTO E in order to get here.'
  147. AddLine ''
  148. AddLine '*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*'
  149. AddLine ''
  150. AddLine ':E'
  151. AddLine 'CLS'
  152. AddLine 'Echo  * * * * * * Warning * * * * * * *'
  153. AddLine 'Echo.'
  154. AddLine 'Echo  The file MXSTOP.BAT, DROPTO.BAT, and BATEXIT.BAT should be in'
  155. AddLine 'Echo  the same directory as the MARX.BAT file. Run MARXMENU INST in'
  156. AddLine 'Echo  the directory where you want MARX.BAT to reside.'
  157. AddLine ':ENDBAT'
  158.  
  159.  
  160. WriteTextFile 'MARX.BAT' FileLine
  161.  
  162. ClearLineBuffer
  163.  
  164. ;----- Here we create the DROPTO.BAT file.
  165.  
  166. Writeln
  167. Write ' Creating DROPTO.BAT ... '
  168.  
  169. AddLine 'DEL %1'
  170. AddLine 'SET KSV='
  171. AddLine 'SET MXCMD='
  172. AddLine '%2 %3 %4 %5 %6 %7 %8 %9'
  173. AddLine 'BATEXIT'
  174. AddLine ''
  175. AddLine '*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*'
  176. AddLine ''
  177. AddLine 'DropTo is used when you want to eliminate the temporary batch'
  178. AddLine 'file created by MarxMenu. This is useful if you shell to DOS'
  179. AddLine 'and then run MarxMenu from the dos shell. It avoids the'
  180. AddLine '"Missing Batch File" error.'
  181. AddLine ''
  182. AddLine 'DropTo is run from within the temporary batch file you want'
  183. AddLine 'to eliminate.'
  184. AddLine ''
  185. AddLine 'Usage: DROPTO %0 <command line>'
  186. AddLine ''
  187. AddLine "Here's how it works:"
  188. AddLine ''
  189. AddLine '     $MX00000.BAT <------deletes this file--------+'
  190. AddLine '     ------------                                 |'
  191. AddLine '     DROPTO %0 COMMAND.COM ------------> DEL %1 >-+'
  192. AddLine '                                         SET KSV='
  193. AddLine '                                         SET MXCMD='
  194. AddLine '              %2 executes command.com--> %2 %3 %4 %5 %6 %7 %8 %9'
  195. AddLine ''
  196. AddLine '*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*'
  197.  
  198. WriteTextFile 'DROPTO.BAT' FileLine
  199.  
  200. ClearLineBuffer
  201.  
  202. ;----- Here we create the MXSTOP.BAT file.
  203.  
  204. Writeln
  205. Write ' Creating MXSTOP.BAT ... '
  206.  
  207. AddLine 'GOTO START'
  208. AddLine ''
  209. AddLine '*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*'
  210. AddLine ''
  211. AddLine 'This batch file is run when MarxMenu exits the MARX.BAT file. The'
  212. AddLine 'environment variable MXCMD is set to MXSTOP which causes the'
  213. AddLine 'MARX.BAT file to jump to this file.'
  214. AddLine ''
  215. AddLine 'By adding lines to the end of this file you can control what'
  216. AddLine 'happens when you exit the menu.'
  217. AddLine ''
  218. AddLine 'The %1 parameter if set is used to delete the temporary batch file.'
  219. AddLine ''
  220. AddLine '*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*'
  221. AddLine ''
  222. AddLine ':START'
  223. AddLine 'IF NOT "%1" == "" DEL %1'
  224. AddLine 'SET MXCMD='
  225. AddLine 'SET KSV='
  226.  
  227. WriteTextFile 'MXSTOP.BAT' FileLine
  228.  
  229. ClearLineBuffer
  230.  
  231. ;----- Here we create the \LOGIN\OFF.BAT file.
  232.  
  233. if ExistDir '\LOGIN' and NetworkVersion
  234.    if not ExistFile '\LOGIN\OFF.BAT'
  235.  
  236.       Writeln
  237.       Write ' Creating OFF.BAT ... '
  238.  
  239.       AddLine 'ECHO ON'
  240.       AddLine ''
  241.       AddLine 'REM This batch file is used to log off the network.'
  242.       AddLine 'REM Add the commands you want to execute when logoff occurs here.'
  243.       AddLine ''
  244.       AddLine 'LOGOUT'
  245.  
  246.       WriteTextFile '\LOGIN\OFF.BAT' FileLine
  247.  
  248.       ClearLineBuffer
  249.    endif
  250. endif
  251.  
  252. Wait PauseTime
  253. EraseTopWindow
  254.  
  255. CheckEnvSize
  256.  
  257. EraseTopWindow
  258. BoxBorderColor Yellow Mag
  259. BoxInsideColor White Mag
  260. DrawBox 18 10 44 7
  261. BoxBorderColor LGreen Blue
  262. BoxInsideColor Yellow Blue
  263. DrawBox 23 12 34 3
  264. WriteCenter 'MarxMenu Installed!'
  265. Wait PauseTime * 2
  266. EraseTopWindow
  267. EraseTopWindow
  268.  
  269. FinalWarning
  270.  
  271. ExitMenu
  272.  
  273. ;--- Menu Exits Here
  274.  
  275. ;===================== Procedures ========================
  276.  
  277. ;--- Check the environment size
  278.  
  279. Procedure CheckEnvSize
  280. var NeededSpace ShellCommand OldComspec
  281.    if EnvFree < 150
  282.       OldComspec = ReadEnv('COMSPEC')
  283.       ConfigSysPath = ExistOnPath( 'CONFIG.SYS' )
  284.       NeededSpace = (EnvSize + 160) / 16 * 16
  285.       if DosVerNumber < 320
  286.          ShellCommand = Str(NeededSpace / 16)
  287.       else
  288.          ShellCommand = Str(NeededSpace)
  289.       endif
  290.       if ConfigSysPath = ''
  291.          BoxBorderColor LCyan Blue
  292.          BoxInsideColor White Blue
  293.          DrawBox 15 8 51 13
  294.          WriteCenter '* Warning! *'
  295.          Writeln char(7)
  296.          Writeln '  You have a total of ' EnvSize ' bytes of environment'
  297.          Writeln '  space with only ' EnvFree ' bytes free. MarxMenu'
  298.          Writeln '  requires about 150 bytes of free environment'
  299.          Writeln '  space. You should modify you CONFIG.SYS file'
  300.          Writeln '  as follows:'
  301.          Writeln
  302.          WriteCenter 'SHELL=COMMAND.COM /P /E:' ShellCommand
  303.          Writeln
  304.          Writeln
  305.          WriteCenter(' * Press any Key to Continue * ')
  306.          Cursor Off
  307.          LastKey = ReadKey
  308.          EraseTopWindow
  309.       else
  310.          ReadTextFile(ConfigSysPath,ConfigSysLines)
  311.          Loop ConfigSysLines
  312.            WorkStr = UpperCase(LoopVal)
  313.            If (NextWord( WorkStr) = 'SHELL')
  314.              Delete(ConfigSysLines,LoopIndex,1)
  315.            EndIf
  316.          EndLoop
  317.          ShellCommand = 'SHELL=' + OldComspec + ' /P /E:' + ShellCommand
  318.          ConfigSysLines[NumberOfElements(ConfigSysLines) + 1] = ShellCommand
  319.          WriteTextFile(ConfigSysPath,ConfigSysLines)
  320.       endIf
  321.    endIf
  322. EndProc
  323.  
  324.  
  325. Procedure AddLine (L)
  326.    FileLinePtr = FileLinePtr + 1
  327.    FileLine[FileLinePtr] = L
  328. EndProc
  329.  
  330.  
  331. Procedure ClearLineBuffer
  332.    Dispose(FileLine)
  333.    FileLinePtr = 0
  334. EndProc
  335.  
  336.  
  337. Procedure InitialDisplay
  338.    if ColorScreen
  339.       TextColor Cyan Blue
  340.       ClearScreen 176
  341.       GotoXY 1 25
  342.       TextColor Yellow Mag
  343.       ClearLine
  344.       WriteCenter 'MarxMenu Version ' MarxVersion ' * Copyright 1989-93 by Marc Perkel'
  345.       BoxBorderColor White Brown
  346.       BoxInsideColor Yellow Brown
  347.       BoxHeaderColor Yellow Mag
  348.       ClockColor Yellow Brown
  349.       TextColor Yellow Brown
  350.    else
  351.       ClearScreen 176
  352.       TextColor Black Grey
  353.       GotoXY 1 25
  354.       ClearLine
  355.       WriteCenter 'MarxMenu Version ' MarxVersion ' * Copyright 1989-93 by Marc Perkel'
  356.       BoxBorderColor Black Grey
  357.       BoxInsideColor Black Grey
  358.       BoxHeaderColor Black Grey
  359.       ClockColor Black Grey
  360.    endif
  361.  
  362.    SingleLineBox
  363.    Explode Off
  364.    DrawBox 1 1 80 3
  365.    GotoXY (54,1)
  366.    Write "MarxMenu Installation"
  367.    ClockPos 3 2
  368.  
  369.    BlankTime = 0
  370.    ScrollMove Off
  371.  
  372.    Explode On
  373.    Shadow Off
  374.    BlockBox
  375.    InverseColor Yellow Red
  376.  
  377.    BoxBorderColor Yellow Mag
  378.    BoxInsideColor Mag Mag
  379.    DrawBox 10 6 61 17
  380.    BoxBorderColor LGreen Blue
  381.    BoxInsideColor Yellow Blue
  382.    Shadow On
  383.  
  384.    DrawBox 35 13 11 3
  385.    WriteCenter 'The'
  386.    Loop 5
  387.       MoveWindow -4 -1
  388.       Wait 3
  389.    EndLoop
  390.  
  391.    DrawBox 35 13 11 3
  392.    WriteCenter 'Marx'
  393.    Loop 5
  394.       MoveWindow 4 -1
  395.       Wait 3
  396.    EndLoop
  397.  
  398.    DrawBox 35 13 11 3
  399.    WriteCenter 'Menu'
  400.    Loop 5
  401.       MoveWindow -4 1
  402.       Wait 3
  403.    EndLoop
  404.  
  405.    DrawBox 35 13 11 3
  406.    WriteCenter 'System'
  407.    Loop 5
  408.       MoveWindow 4 1
  409.       Wait 3
  410.    EndLoop
  411.  
  412.    Wait 20
  413.    DrawBox 25 13 31 3
  414.    WriteCenter 'Installation Menu'
  415.    Wait 250
  416.    RollWindow 4
  417.    EraseTopWindow
  418.    Wait 20
  419.    RollWindow 3
  420.    EraseTopWindow
  421.    Wait 20
  422.    RollWindow 2
  423.    EraseTopWindow
  424.    Wait 20
  425.    RollWindow 1
  426.    EraseTopWindow
  427.    Wait 20
  428.    EraseTopWindow
  429. EndProc
  430.  
  431.  
  432. Procedure FinalWarning
  433.    BoxBorderColor LCyan Blue
  434.    BoxInsideColor White Blue
  435.    DrawBox 14 9 52 11
  436.    WriteCenter '* Warning! *'
  437.    Writeln
  438.    Writeln
  439.    Writeln '  One common mistake that users make is running'
  440.    Writeln '  MARXMENU <menu>. You are supposed to run menus'
  441.    Writeln '  by typing MARX <menu> which uses the MARX.BAT'
  442.    Writeln '  file. Also, besides reading the manual, please'
  443.    Writeln '  read the MARXREAD.ME file.'
  444.    Writeln
  445.    WriteCenter( ' * Press any Key to Continue * ' )
  446.    Cursor Off
  447.    LastKey = ReadKey
  448.    EraseTopWindow
  449. EndProc
  450.